package cn.jy.erp.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.jy.erp.domain.AccountsPayable;
import cn.jy.erp.domain.FnancialPlans;
import cn.jy.erp.domain.IncomePay;
import cn.jy.erp.domain.IncomeStacking;
import cn.jy.erp.domain.SZResult;
import cn.jy.erp.domain.SaleIncome;
import cn.jy.erp.domain.SalePurchase;
import cn.jy.erp.domain.SjjeTotal;
import cn.jy.erp.domain.SzName;
import cn.jy.erp.domain.WeekConvert;

public interface FnancialPlansMapper {
    int deleteByPrimaryKey(String ieid);

    int insert(FnancialPlans record);

    int insertSelective(FnancialPlans record);

    List<FnancialPlans> selectByPrimaryKey();

    int updateByPrimaryKeySelective(FnancialPlans record);

    int updateByPrimaryKey(FnancialPlans record);
    
    
    public List<FnancialPlans> getPlans();
    
    public void insertPay(SZResult szResult);
    
    void updatePay(IncomePay incomePay);
   /**
    * 查询所有新表的数据
    * @return
    */
    
    public List<SZResult> getAllData();
    /**
     * 计算收入支出的差值
     * @return
     */
    public List<SZResult> getCalculation();
    
    public List<FnancialPlans> getBySZInformation(@Param("type")String type,@Param("whereWeek")String whereWeek);
    
    public List<FnancialPlans> getBySJInformation(@Param("type")String type,@Param("whereWeek")String whereWeek);
    
    
	 /**
	  * 根据日期获取该日期是一年中第多少周
	  */
	 void updateWeek(SZResult szResult);
    
    /**
     * 如果收支表中没有采购表中对应的数据就在收支表中添加一条，反之就在采购表中添加一条
     */
	 void insertSZTable(SZResult szResult);
	 /**
	  * 获取销售采购表中的实际金额和收支表的实际计划金额
	  * @return
	  */
	public List<SaleIncome> getMuchDate();
	/**
	 * 根据月查 采购详细信息
	 */
	public List<SalePurchase> getMouthCGDetail(@Param("startTime")String startTime,@Param("endTime")String endTime);
	/**
	 * 根据月查销售详细信息
	 */
	public List<SalePurchase> getMouthXSDetail(@Param("startTime")String startTime,@Param("endTime")String endTime);
	/**
	 * 根据月查收入详细信息
	 * 
	 */
	public List<SZResult> getMouthSRDetail(@Param("startTime")String startTime,@Param("endTime")String endTime);
	
	/**
	 * 根据月查支出详细信息
	 */
	public List<SZResult> getMouthZCDetail(@Param("startTime")String startTime,@Param("endTime")String endTime);
	/**
	 * 根据商品id修改销售采购金额、日期
	 */
	public List<SalePurchase> getXSSPid(@Param("SPID")String SPID);
	
	
	void updateXSTable(SalePurchase salePurchase);
	/**
	 * 根据iecode修改收入支出表的日期金额
	 */
	public List<SZResult> getSZIECODE(@Param("IECODE")String IECODE);
	
	void updateSZTable(SZResult szResult);
	/**
	 * 获取收支码表
	 */
	public List<SzName> getSzName(@Param("SZLX") String SZLX);
	/**
	 * 根据商品id删除销售采购数据
	 */	
	void deleteSP(@Param("spid")String spid);
	/**
	 * 查询应付账款总额
	 * @param type
	 * @return
	 */
	public List<AccountsPayable> getPayable(@Param("type")String type);
	
	/**
	 * 查询收入数据绘制堆积图
	 */
	
	public List<IncomeStacking> getStacking(@Param("szlx")String szlx);
	/**
	 * 查询收入唯一类别
	 */
	public List<IncomeStacking> getOnlyCategory(@Param("szlx")String szlx);
	/**
	 *查询一周内唯一一个科目 
	 * @param szlx
	 * @return
	 */
	public List<IncomeStacking> getOnlySubject(@Param("szlx")String szlx);
	
	public List<IncomeStacking> getByTypeStacking(@Param("szlx")String szlx,@Param("type")String type);
	 /**
	  * 日期转换
	  */
	 public List<WeekConvert> getsjWeek();
	 /**
	  * 根据id修改周
	  */	 
	 void  updateSjweek(@Param("week")String week,@Param("id")String id);
	 /**
	  * 查询实际金额的支出周
	  */
	 List<SjjeTotal> getSjJeTotal(@Param("szlx")String szlx);
	 /**
	  * 修改实际支出收入总额
	  */
	 void updateSJtotal(@Param("money")String money,@Param("week")String week,@Param("type")String type);
}